package br.com.gaspar.tm.mb;

import java.util.ArrayList;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

import org.primefaces.model.UploadedFile;

import br.com.gaspar.framework.visao.jsf.ManagedBeanBase;
import br.com.gaspar.tm.bo.iface.IBlogBO;
import br.com.gaspar.tm.entidade.Blog;
import br.com.gaspar.utils.exception.BaseException;

@ManagedBean(name="BlogMB")
@ViewScoped
public class BlogMB extends ManagedBeanBase<Blog> {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	//Amazon S3
	private static final String caminhoS3 = "http://s3-sa-east-1.amazonaws.com/tmtransporte/blog/";
	
	@EJB
	private IBlogBO bo;
	
	private UploadedFile imagemPrincipal;
	
	private UploadedFile imagem1;
	
	private UploadedFile imagem2;
	
	private UploadedFile imagem3;
	
	private UploadedFile imagem4;
	
	@Override
	protected IBlogBO getFachada() {
		return bo;
	}
	
	@PostConstruct
	@Override
	public void iniciar() {
		entidade = new Blog();
		super.iniciar();
	}
	
	@Override
	protected void criarAntes() throws BaseException {
		entidade = new Blog();
		super.criarAntes();
	}
	
	@Override
	protected void editarAntes() throws BaseException {
		setEntidade(bo.buscarPorId(Blog.class, getEntidade().getId()));
	}
	
	@Override
	protected void gravarAntes() throws BaseException {
		//Seta os caminhos das imagens escolhidas em cada propriedade
		if(getImagemPrincipal() != null){
			getEntidade().setCaminhoImagemPrincipal(caminhoS3 + getImagemPrincipal().getFileName());
		}
		if(getImagem1() != null){
			getEntidade().setCaminhoImagem1(caminhoS3 + getImagem1().getFileName());
		}
		if(getImagem2() != null){
			getEntidade().setCaminhoImagem2(caminhoS3 + getImagem2().getFileName());
		}
		if(getImagem3() != null){
			getEntidade().setCaminhoImagem3(caminhoS3 + getImagem3().getFileName());
		}
		if(getImagem4() != null){
			getEntidade().setCaminhoImagem4(caminhoS3 + getImagem4().getFileName());
		}
	}
	
	@Override
	protected void gravarApos() throws BaseException {
		List<UploadedFile> imagens = new ArrayList<UploadedFile>();
		if(getImagemPrincipal() != null){
			imagens.add(getImagemPrincipal());
		}
		if(getImagem1() != null){
			imagens.add(getImagem1());
		}
		if(getImagem2() != null){
			imagens.add(getImagem2());
		}
		if(getImagem3() != null){
			imagens.add(getImagem3());
		}
		if(getImagem4() != null){
			imagens.add(getImagem4());
		}
		bo.enviarAmazonS3(imagens);
	}
	
	public UploadedFile getImagem1() {
		return imagem1;
	}

	public void setImagem1(UploadedFile imagem1) {
		this.imagem1 = imagem1;
	}

	public UploadedFile getImagem2() {
		return imagem2;
	}

	public void setImagem2(UploadedFile imagem2) {
		this.imagem2 = imagem2;
	}

	public UploadedFile getImagem3() {
		return imagem3;
	}

	public void setImagem3(UploadedFile imagem3) {
		this.imagem3 = imagem3;
	}

	public UploadedFile getImagem4() {
		return imagem4;
	}

	public void setImagem4(UploadedFile imagem4) {
		this.imagem4 = imagem4;
	}

	public UploadedFile getImagemPrincipal() {
		return imagemPrincipal;
	}

	public void setImagemPrincipal(UploadedFile imagemPrincipal) {
		this.imagemPrincipal = imagemPrincipal;
	} 
}
